const https=require('https');
const iconv=require('iconv-lite')
const cheerio=require('cheerio')
const fs=require('fs')
const path=require('path');
const { constants } = require('buffer');



// 已有变量配置
// 御书屋
const yushuwu={
    TARGET_URL:'',
    BASE_URL:'https://m.yushuwuu.com',
    content:'#nr1',
    nextUrl:'#pb_next',
    title:'#nr_title'
}

// 奇书网
// 编码需要时gbk
// 获取下一章要用如下代码
//     const nextUrl=$('a').filter(function(i, el) {
//     return $(el).text() == '下一章';
//      }).attr('href')
const biquge={
    TARGET_URL:'',
    BASE_URL:'https://www.890h.com',
    content:'#content',
    nextUrl:'',
    title:'h1'
}

// 起点
const qidian={

}

// 落小
const luoxia={

}

//配置的变量
var config={
    ...biquge,
    TARGET_URL:'https://www.890h.com/27_27540/19055363.html',
    name:'德萨罗人鱼'
}

var oldTitle='';

/**
 * 解析HTML内容
 * @param {*} html html
 */
function parseHtml(html){
    const $=cheerio.load(html);
    const content=$(`${config.content}`).text();
    // const nextUrl=$(`${config.nextUrl}`).attr('href')
    const nextUrl=$('a').filter(function(i, el) {
        return $(el).text() == '下一章';
      }).attr('href')
    const title=$(`${config.title}`).text();
    return {
        content,
        nextUrl,
        title
    }

}

/**
 * 写入文件
 * @param {*}} title 
 * @param {*} content 
 */
function writeFile(title,content){
    const dirPath=path.join(__dirname,'testTxt/');
    const filePath=path.join(__dirname,`testTxt/${config.name}.txt`);
    content=content.replace('  ','');
    try{
        fs.accessSync(dirPath,constants.F_OK)
    }catch(err){
        console.log("文件不存在");
        fs.mkdirSync(dirPath,{recursive:true},err=>{
            if(err) throw err
            
        })
        fs.writeFileSync(filePath)
        console.log('创建文件夹');
    }
    

    if(title!=oldTitle){
        content='\r\n'+title+'\r\n'+content;
        oldTitle=title;
    }

    fs.appendFile(filePath,content,function(err){
        if(err){
            console.log(title,':文件写入失败',err);
        }
        console.log(title,':文件写入完毕');
    })
}

/**
 * 获取html内容
 * @param {*} url 网页url
 */
function getHtml(url){
    https.get(url,function(res){
        var chunks=[];
        var size=0;
    
        res.on('data',function(chunk){
            chunks.push(chunk);
            size+=chunk.length;
        })
    
        res.on('end',function(){
            var buf=Buffer.concat(chunks,size);
            var html=iconv.decode(buf,'gbk');
            const obj=parseHtml(html);
            writeFile(obj.title,obj.content);
            if(obj.nextUrl){
                getHtml(config.BASE_URL+obj.nextUrl)
            }
        })
        
    })
}

function main(){
    getHtml(config.TARGET_URL);
}

main();